package com.carl.zeus.model.schedule;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.carl.zeus.util.IdEntity;
import lombok.Data;
import lombok.ToString;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 定时任务
 * </p>
 *
 * @author zcm
 * @since 2017-10-28
 */
@Data
@ToString
@TableName("schedule_job")
public class ScheduleJob extends IdEntity<ScheduleJob> {

    private static final long serialVersionUID = 1L;
    
    /**
	 * 任务调度参数key
	 */
    public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY";

    /**
     * spring bean名称
     */
	@TableField("bean_name")
	@NotBlank(message="bean名称不能为空")
	private String beanName;

    /**
     * 方法名
     */
	@TableField("method_name")
	@NotBlank(message="方法名称不能为空")
	private String methodName;

    /**
     * 参数
     */
	private String params;

    /**
     * cron表达式
     */
	@TableField("cron_expression")
	@NotBlank(message="cron表达式不能为空")
	private String cronExpression;

    /**
     * 任务状态  0：正常  1：暂停
     */
	private Integer status;

    /**
     * 备注
     */
	private String remark;

    /**
     * 创建时间
     */
	@JSONField(format="yyyy-MM-dd HH:mm:ss")
	@TableField("create_time")
	private Date createTime;

	/**
	 * 修改时间
	 */
	@JSONField(format="yyyy-MM-dd HH:mm:ss")
	@TableField("update_time")
	private Date updateTime;

}
